/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} k
 * @return {ListNode}
 */
 var getKthFromEnd = function (head, k) {
	// 以下两种情况返回null
	// 1. 输入为空链表
	// 2. 输入 k 为无符号整数0，k-1 !== -1，而是一个很大的数
	if (head.val == null || k === 0) {
		return null;
	}
	// 初始化快慢指针
	let fast = head;
	let slow = head;
	// 快指针走到k-1的位置
	for (let i = 0; i < k; i++) {
		// 节点总数少于 k，返回null
		if (fast !== null) {
			fast = fast.next;
		} else {
			return null;
		}
	}
	// 直到fast指向尾节点null
	while (fast) {
		fast = fast.next;
		slow = slow.next;
	}
	return slow;
}